#ifndef GRPOBJET_INCLUDED
#define GRPOBJET_INCLUDED

#include "objet.h"
#include <stdio.h>

/**
 * \file grpobjet.h
 * \brief Groupe d'objet
 * \author Saül Nicolas
 * \date 04 Juin 2013
 *
 * Module gérant les groupes d'objets
 *
 */

struct sGrpObjet
{
  int tailleutilise;
  int taillemax;
  Objet * Groupe;
};
typedef struct sGrpObjet GrpObjet;

/** Fonction Get **/
int getconsoGrpObjet(const GrpObjet* G, int IndiceObjet);

float getcadenceGrpObjet(const GrpObjet* G, int IndiceObjet);

int GetTailleGrpObjet(const GrpObjet * G);

int getyGrpObjet(const GrpObjet* G, int IndiceObjet);

int getxGrpObjet(const GrpObjet* G, int IndiceObjet);

int getcacheGrpObjet(const GrpObjet* G, int IndiceObjet);

int getForceGrpObjet(const GrpObjet* G, int IndiceObjet);

float getPorteeGrpObjet(const GrpObjet* G, int IndiceObjet);

int getidObjetGrpObjet(const GrpObjet* G, int IndiceObjet);

Objet* getObjetGrpObjet(const GrpObjet* G, int IndiceObjet);

/** Fonction Set **/
void setconsoGrpObjet(GrpObjet* G,int IndiceObjet,int conso);

void setcadenceGrpObjet(GrpObjet* G, int IndiceObjet , float cadence);

void setxyGrpObjet(GrpObjet* G, int IndiceObjet , int x , int y);

void setcacheGrpObjet(GrpObjet* G, int IndiceObjet , int cache);

void setForceGrpObjet(GrpObjet* G, int IndiceObjet , int Force);

void setPorteeGrpObjet(GrpObjet* G, int IndiceObjet , float Portee);

void setidObjetGrpObjet(GrpObjet* G, int IndiceObjet , int idObjet);

/** Fonction plus complexe **/
void AjouterGrpObjetaleatoire(GrpObjet * G,int x,int y,int difficulte);

void copieGrpObjet(GrpObjet * G, int IndiceObjet, Objet * destination);

/** Fonctions liées au groupe **/

GrpObjet * InitGrpObjet(int taillemax);

int GetnbGrpObjet(GrpObjet * G);

void AjouterGrpObjet(GrpObjet * G, Objet * O);

void SupprGrpObjet(GrpObjet * G, int IndiceObjet);

void TestamentGrpObjet(GrpObjet * G);

#endif
